---
title: Электронная коммерция
description: Введение в добавление вариантов электронной коммерции на ваш сайт Astro
i18nReady: true
---
import PackageManagerTabs from '~/components/tabs/PackageManagerTabs.astro'
import ReadMore from '~/components/ReadMore.astro'

С помощью Astro вы можете создать несколько вариантов электронной коммерции, от ссылок для оформления заказа до "размещенных" страниц оплаты, и до создания целого магазина с использованием API платежного сервиса.

## Оверлей обработки платежей

Некоторые сервисы обработки платежей (например, [Lemon Squeezy](#lemon-squeezy), [Paddle](#paddle)) добавляют форму оплаты, чтобы ваш клиент мог совершать покупки на вашем сайте. Они могут быть размещены поверх содержимого или встроены на страницу вашего сайта. Они могут предлагать некоторую базовую настройку или брендинг сайта и могут быть добавлены в ваш проект Astro в виде скриптов, кнопок или внешних ссылок.

### Lemon Squeezy

[Lemon Squeezy](https://www.lemonsqueezy.com/) - это универсальная платформа для платежей и подписок с поддержкой мультивалютности, глобального налогообложения, интеграцией с PayPal и многим другим. Она позволяет создавать и управлять цифровыми товарами и услугами через панель управления учетной записью и предоставляет URL-адреса товаров для процесса оформления заказа.

Базовая [JavaScript-библиотека Lemon.js](https://docs.lemonsqueezy.com/help/lemonjs/what-is-lemonjs) позволяет продавать ваши продукты Lemon Squeezy с помощью ссылки для оформления заказа.

#### Базовое использование

Ниже приведен пример добавления элемента Lemon Squeezy "Купить сейчас" на страницу Astro. При нажатии на эту ссылку откроется окно оформления заказа и посетитель сможет совершить одну покупку.

1. Добавьте следующий тег `<script>` на вашу страницу в `head` или `body`:

    ```html title="src/pages/my-product-page.astro"
    <script src="https://app.lemonsqueezy.com/js/lemon.js" defer></script>
    ```

2. Создайте ссылку на странице, указав URL-адрес вашего продукта. Включите класс `lemonsqueezy-button`, чтобы при нажатии открывался оверлей оформления заказа.

    ```html title="src/pages/my-product-page.astro"
    <a class="lemonsqueezy-button" href="https://demo.lemonsqueezy.com/checkout/...">
      Buy Now
    </a>
    ```

#### Lemon.js

Lemon.js также предоставляет дополнительные возможности, такие как [программное открытие оверлеев](https://docs.lemonsqueezy.com/help/lemonjs/opening-overlays) и [обработка событий оверлеев](https://docs.lemonsqueezy.com/help/lemonjs/handling-overlays).

<ReadMore> Для получения дополнительной информации прочтите [Руководство по началу работы с Lemon Squeezy для разработчиков](https://docs.lemonsqueezy.com/guides/developer-guide).</ReadMore>

### Paddle

[Paddle](https://www.paddle.com/) - это решение для выставления счетов за цифровые товары и услуги. Он обрабатывает платежи, налоги и управление подписками через оверлей или встроенное оформление заказа.

[Paddle.js](https://developer.paddle.com/paddlejs/overview) - это легковесная JavaScript-библиотека, которая позволяет создавать полноценные, интегрированные варианты подписной оплаты с использованием Paddle.

#### Базовое использование	

Ниже приведен пример добавления элемента "Купить сейчас" Paddle на страницу Astro. При нажатии на эту ссылку откроется окно оформления заказа, и посетитель сможет совершить одну покупку.

После того как ваш домен платежной ссылки по умолчанию (ваш собственный веб-сайт) будет одобрен Paddle, вы можете превратить любой элемент на вашей странице в триггер для оверлея оформления заказа с помощью атрибутов данных HTML.
	
1. Добавьте следующие два тега `<script>` на вашу страницу в `head` или `body`:

    ```html title="src/pages/my-product-page.astro"
    <script src="https://cdn.paddle.com/paddle/v2/paddle.js"></script>
    <script type="text/javascript">
      Paddle.Setup({ 
        token: '7d279f61a3499fed520f7cd8c08' // замените токеном на стороне клиента
      });
    </script>
    ```

2. Превратите любой элемент на вашей странице в кнопку Paddle Checkout, добавив класс `paddle_button`:

    ```html title="src/pages/my-product-page.astro"
    <a href="#" class="paddle_button">Buy Now</a>
    ```

3. Добавьте атрибут `data-items`, чтобы указать `priceId` и `quantity` вашего продукта Paddle. Вы также можете дополнительно передавать другие [поддерживаемые атрибуты данных HTML](https://developer.paddle.com/paddlejs/html-data-attributes) для предзаполнения данных, обработки успешного оформления заказа или стилизации вашей кнопки и оверлея оформления заказа:

    ```html title="src/pages/my-product-page.astro"
    <a 
      href="#" 
      class="paddle_button"
      data-display-mode="overlay"
      data-theme="light"
      data-locale="en"
      data-success-url="https://example.com/thankyou"
      data-items='[
        {
          "priceId": "pri_01gs59hve0hrz6nyybj56z04eq", 
          "quantity": 1
        }
      ]'
    >
      Buy now
    </a>
    ```

#### Paddle.js

Вместо передачи атрибутов данных HTML вы можете отправлять данные в оверлей оформления заказа с помощью JavaScript для передачи нескольких атрибутов и еще большей настройки. Вы также можете создавать рабочие процессы обновления с помощью встроенного оформления заказа.

<ReadMore>Прочитайте подробнее об [использовании Paddle.js для создания встроенного оформления заказа](https://developer.paddle.com/build/checkout/build-branded-inline-checkout).</ReadMore>


## Полнофункциональные решения электронной коммерции

Для более гибкой настройки корзины покупок на вашем сайте и процесса оформления заказа вы можете подключить более полнофункционального поставщика финансовых услуг (например, [Snipcart](#snipcart)) к вашему Astro проекту. Эти платформы электронной коммерции также могут интегрироваться с другими сторонними сервисами для управления учетными записями пользователей, персонализации, инвентаризации и аналитики.

### Snipcart

[Snipcart](https://snipcart.com/) - это мощная платформа для интернет-магазина на HTML/JavaScript.

Snipcart также позволяет интегрироваться со сторонними сервисами, такими как службы доставки, включать вебхуки для продвинутой интеграции электронной коммерции между вашей корзиной покупок и другими системами, выбирать из нескольких платежных шлюзов (например, Stripe, Paypal и Square), настраивать шаблоны электронной почты и даже предоставляет живую среду тестирования.

:::tip
Хотите получить готовое решение Snipcart? Посмотрите [`astro-snipcart`](https://astro-snipcart.vercel.app/), полностью функциональный шаблон сообщества Astro, включающий опциональную систему дизайна, готовый к интеграции с вашим существующим аккаунтом Snipcart.
:::

#### Базовое использование

Ниже приведен пример настройки оформления заказа Snipcart и добавления кнопок "Добавить в корзину" и "Оформить заказ сейчас" на страницу Astro. Это позволит вашим посетителям добавлять товары в корзину без немедленной отправки на страницу оформления заказа.

<ReadMore>Полные инструкции, включая настройку магазина Snipcart, вы найдете в [документации по установке Snipcart](https://docs.snipcart.com/v3/setup/installation).</ReadMore>

1.  Добавьте скрипт [как показано в инструкциях по установке Snipcart](https://docs.snipcart.com/v3/setup/installation) на вашу страницу после элемента `<body>`.
    ```html title="src/pages/my-product-page.astro"
    <body></body>
    <script>
      window.SnipcartSettings = {
        publicApiKey: "ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ_API",
        loadStrategy: "on-user-interaction",
      };

      (function()...); // доступно в документации Snipcart
    </script>
    ```

2. Настройте `window.SnipcartSettings` с любыми [доступными настройками Snipcart](https://docs.snipcart.com/v3/setup/installation#settings), чтобы контролировать поведение и внешний вид вашей корзины.

    ```html title="src/pages/my-product-page.astro"
    <script>
      window.SnipcartSettings = {
        publicApiKey: "ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ_API",
        loadStrategy: "manual",
        version: "3.7.1",
        addProductBehavior: "none",
        modalStyle: "side",

      };

      (function()...); // доступно в документации Snipcart
    </script>
    ```

3. Добавьте `class="snipcart-add-item"` к любому HTML-элементу, например, к `<button>`, чтобы добавить товар в корзину при нажатии. Также включите любые другие элементы данных для [общих атрибутов товаров Snipcart](https://docs.snipcart.com/v3/setup/products), таких как цена и описание, а также любые необязательные поля.

    ```html title="src/pages/my-product-page.astro"
    <button 
      class="snipcart-add-item"
      data-item-id="astro-print"
      data-item-price="39.99"
      data-item-description="A framed print of the Astro logo."
      data-item-image="/assets/images/astro-print.jpg"
      data-item-name="Astro Print"
      data-item-custom1-name="Frame color"
      data-item-custom1-options="Brown|Silver[+10.00]|Gold[+20.00]"
      data-item-custom2-name="Delivery instructions"
      data-item-custom2-type="textarea"
    >
      
      Add to cart
    </button>
    ```

4. Добавьте кнопку оформления заказа Snipcart с классом `snipcart-checkout`, чтобы открыть корзину и позволить гостям завершить покупку с помощью модального окна оформления заказа.

    ```html title="src/pages/my-product-page.astro"
    <button class="snipcart-checkout">Click here to checkout</button>
    ```

#### Snipcart JavaScript SDK

[Snipcart JavaScript SDK](https://docs.snipcart.com/v3/sdk/basics) позволяет вам программно конфигурировать, настраивать и управлять вашей корзиной Snipcart.

Это позволяет вам выполнять такие действия, как:

- Получать необходимую информацию о текущей сессии Snipcart и применять определенные операции к корзине.
- Прослушивать входящие события и динамически запускать обратные вызовы.
- Прослушивать изменения состояния и получать полный "снимок" состояния корзины.

<ReadMore>Для получения дополнительной информации о всех возможностях интеграции Snipcart с вашим проектом Astro, см. [документацию Snipcart](https://docs.snipcart.com/v3/).</ReadMore>

#### `astro-snipcart`

Есть два созданных сообществом пакета `astro-snipcart`, которые могут упростить использование Snipcart.
 
- [`@lloydjatkinson/astro-snipcart`Astro-шаблон](https://astro-snipcart.vercel.app/): Этот шаблон Astro включает в себя опциональную систему дизайна для полноценного решения электронной коммерции из коробки. Узнайте больше на его собственном обширном сайте документации, включая [мотивацию создания `astro-snipcart`](https://astro-snipcart.vercel.app/motivation) как предоставление удобного, нативного для Astro способа взаимодействия с API Snipcart.

- [интеграция `@Adammatthiesen/astro-snipcart`](https://github.com/Adammatthiesen/astro-snipcart): Эта интеграция была сильно вдохновлена `astro-snipcart` и предоставляет компоненты Astro (или компоненты Vue), которые вы можете добавить в ваш существующий проект Astro для создания продуктов, управления корзиной и многого другого. Более подробную информацию можно найти в [полном руководстве](https://matthiesen.xyz/blog/getting-started-with-my-astro-snipcart-addon).

## Ресурсы сообщества

- [Практический опыт: интернет-магазин с Astro?](https://crystallize.com/blog/building-ecommerce-with-astro)